7장 로드 밸런서
로드 밸런서란
성능을 향상시키기 위해 스케일 아웃을 할 때 로드 밸런서 같은 시스템이 필요하다.
로드 밸런서의 역할
- 요청 분산
기본적으로 로드밸런서는 인터넷으로부터 전송된 요청을 여러 웹서버에 균등하게 분산한다. - SSL처리
송수신하는 데이터를 암호화하는 SSL처리를 해준다. HTTPS 통신에서 SSL을 이용한다. 로드밸런서가 암호화 복호화 처리를 해준다. - 부정 요청 대응
부정한 접근을 대응해주는 시스템 제공
AWS에서 제공하는 로드 밸런서
AWS에서는 ELB라는 서비스로 로드 밸런서를 제공한다.
- Application Load Balancer(ALB)
HTTP, HTTPS를 이용한 접근을 분산하는데 최적화된 로드 밸런서 - Network Load Balancer
분산처리 기능. 다양한 통신 프로토콜에 대응할 수 있음. 소켓 통신도 가능 - Classic Load Balancer
옛날에 쓰이던 로드 밸런서 요즘은 안쓴다고
로드 밸런서 생성
ALB 설정 항목에는 2가지가 있다.
- 로드 밸런서
어떤 프로토콜을 이용할 것인지 - 대상 그룹
어떤 웹 서버에 요청을 분산할 것인지
EC2 -> 로드 밸런서 -> ALB
- VPC와 가용영역 설정
vpc를 지정하고 subnet을 매핑
public subnet 매핑 - 보안그룹 설정
default, elb - 리스너 및 라우팅 설정
라우팅 대상 그룹 생성 - 웹 서버에 접근할 때 접근 프로콜과 포트 번호 설정 (여기서는 http, 3000번 이용)
타깃 등록 - webserver ec2 지정.
작동 확인하기
http 요청 받을 준비
간단하게 web server ec2에 접속해서 http 서버를 가동해본다.
<html><body>hello world</body></html>
만들어서 파이썬으로 간단하게 http 서버 실행
python3 -m http.server 3000
로드밸런서가 healthy check가 하는 것을 통해 확인할 수 있다.
요청 라우팅 확인
로드밸런서는 곧바로 요청을 라우팅 하지 않고, 헬스 체크를 하고 해당 요청들이 모두 성공하면 라우팅 하기 시작한다.
해당 로드밸런서에 대상 탭에서 healthy status 확인할 수 있다.
브라우저로 접근
로드밸런서의 DNS로 브라우저 접근이 가능하다